package com.xique.park.service.command.service;

import com.alibaba.fastjson.JSONObject;
import com.xique.common.core.web.domain.AjaxResult;
import com.xique.park.bean.domain.ParkCar;

import java.util.List;

/**
 * 车辆下发
 *
 * @author: xique
 */
public interface IParkCarCommandService {

    /**
     * 单个设备下发车辆信息
     *
     * @param parkId  车场ID
     * @param sn      设备序列号
     * @param parkCar 车辆信息
     * @return 下发结果
     */
    AjaxResult downSingleCar(Long parkId, String sn, ParkCar parkCar);

    /**
     * 车场所有设备下发车辆信息
     *
     * @param parkId      车场ID
     * @param parkCar     车辆信息
     * @param reminderMsg 提示消息
     * @return 下发结果
     */
    AjaxResult downSingleCar(Long parkId, ParkCar parkCar, String reminderMsg);

    /**
     * 单个设备删除车辆信息
     *
     * @param sn      设备序列号
     * @param parkCar 车辆信息
     * @return 下发结果
     */
    AjaxResult delSingleCar(String sn, ParkCar parkCar);

    /**
     * 车场所有设备删除车辆信息
     *
     * @param parkId      车场ID
     * @param parkCar     车辆信息
     * @param reminderMsg 提示消息
     * @return 下发结果
     */
    AjaxResult delSingleCar(Long parkId, ParkCar parkCar, String reminderMsg);

    /**
     * 单个设备下发车辆信息列表
     *
     * @param parkId 车场ID
     * @param sn     设备序列号
     * @param list   车辆列表
     * @return 下发结果
     */
    AjaxResult downCars(Long parkId, String sn, List<ParkCar> list);

    /**
     * 车场所有设备下发车辆信息列表
     *
     * @param parkId      车场ID
     * @param list        车辆列表
     * @param reminderMsg 提示消息
     * @return 下发结果
     */
    AjaxResult downCars(Long parkId, List<ParkCar> list, String reminderMsg);

    /**
     * 单个设备删除多条车辆记录
     *
     * @param sn   设备序列号
     * @param list 车辆列表
     * @return 下发结果
     */
    AjaxResult delCars(String sn, List<ParkCar> list);

    /**
     * 车场所有设备删除多条车辆记录
     *
     * @param parkId      车场ID
     * @param list        车辆列表
     * @param reminderMsg 提示消息
     * @return 下发结果
     */
    AjaxResult delCars(Long parkId, List<ParkCar> list, String reminderMsg);

    /**
     * 查询记录下发状态(车场所有设备)
     *
     * @param parkId    车场ID
     * @param recIdList /
     * @return 记录下发状态
     */
    JSONObject getCommandStatus(Long parkId, List<Long> recIdList);
}
